package com.wp.module.wpArticleType.service.impl;

import com.github.f4b6a3.uuid.alt.GUID;
import com.wp.common.core.domain.AjaxResult;
import com.wp.module.wpArticleType.domain.WpArticleType;
import com.wp.module.wpArticleType.mapper.WpArticleTypeMapper;
import com.wp.module.wpArticleType.service.IWpArticleTypeService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * 帖子类型Service业务层处理
 * 
 * @author wp
 * @date 2025-02-24
 */
@Service
public class WpArticleTypeServiceImpl implements IWpArticleTypeService 
{
    @Autowired
    private WpArticleTypeMapper wpArticleTypeMapper;

    /**
     * 查询帖子类型
     * 
     * @param id 帖子类型主键
     * @return 帖子类型
     */
    @Override
    public WpArticleType selectWpArticleTypeById(String id)
    {
        return wpArticleTypeMapper.selectWpArticleTypeById(id);
    }

    /**
     * 查询帖子类型列表
     * 
     * @param wpArticleType 帖子类型
     * @return 帖子类型
     */
    @Override
    public List<WpArticleType> selectWpArticleTypeList(WpArticleType wpArticleType)
    {
        return wpArticleTypeMapper.selectWpArticleTypeList(wpArticleType);
    }

    /**
     * 新增帖子类型
     *
     * @param wpArticleType 帖子类型
     * @return 结果
     */
    @Override
    public AjaxResult insertWpArticleType(WpArticleType wpArticleType)
    {
        List<String> ln = new ArrayList<>();
        String[] str = wpArticleType.getName()
                .replace(",", "-")
                .replace("，", "-")
                .replace(" ", "-")
                .replace("  ", "-")
                .split("-");
        List<WpArticleType> wp = wpArticleTypeMapper.selectWpArticleTypeList(new WpArticleType());
        try {
            boolean flag = true;

            // 验证去重 并返回重复项告知用户
            for (String s : str){
                // 避免两个词重击多个空格或者多个符号
                if (StringUtils.isNotEmpty(s)){
                    for (WpArticleType w : wp){
                        if (ObjectUtils.compare(s, w.getName()) == 0){
                            ln.add(s);
                            flag = false;
                            break;
                        }
                    }

                    // 不重复时存入数据库
                    if (flag){
                        String ulid = GUID.v7().toUUID().toString().replace("-", "");
                        wpArticleTypeMapper.insertWpArticleType(new WpArticleType(ulid, s));
                    }

                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return AjaxResult.warn("已添加，但以下类型重复，已自动过滤", ln);
    }

    /**
     * 修改帖子类型
     * 
     * @param wpArticleType 帖子类型
     * @return 结果
     */
    @Override
    public int updateWpArticleType(WpArticleType wpArticleType)
    {
        return wpArticleTypeMapper.updateWpArticleType(wpArticleType);
    }

    /**
     * 批量删除帖子类型
     * 
     * @param ids 需要删除的帖子类型主键
     * @return 结果
     */
    @Override
    public int deleteWpArticleTypeByIds(String[] ids)
    {
        return wpArticleTypeMapper.deleteWpArticleTypeByIds(ids);
    }

    /**
     * 删除帖子类型信息
     * 
     * @param id 帖子类型主键
     * @return 结果
     */
    @Override
    public int deleteWpArticleTypeById(String id)
    {
        return wpArticleTypeMapper.deleteWpArticleTypeById(id);
    }
}
